﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Interfaces;
using System.Collections;

namespace Model
{
    public class Projekt : IProjektdata
    {
        // Attributter
        private int projektNr;
        private string titel;
        private DateTime starttidspunkt;
        private string projektfase;
        private string deadline;
        private string tidsforbrug;
        private DateTime sluttidspunkt;
        bool aktiv;

        // associering
        private Kunde minKunde;
        private Medarbejder minProjektleder;

        // konstruktør   
        public Projekt(int projektNr, string titel, DateTime starttidspunkt, string projektfase, string deadline)
        {
            this.projektNr = projektNr;
            this.titel = titel;
            this.starttidspunkt = starttidspunkt;
            this.projektfase = projektfase;
            this.deadline = deadline;
            tidsforbrug = "";
            sluttidspunkt = starttidspunkt;
            aktiv = true;

            minKunde = null;
            minProjektleder = null;
        }

        #region Associerings-metoder

        // metode til at associere et kunde-objekt til et projekt-objekt
        public void TilknytKunde(Kunde enKunde)
        {
            minKunde = enKunde;
        }

        // metode til at hente det associerede kunde-objekt
        public Kunde GetMinKunde()
        {
            return minKunde;
        }

        // metode til at fjerne det associerede kunde-objekt
        public void FjernKunde()
        {
            minKunde = null;
        }

        // metode til at associere et medarbejder-objekt til et projekt-objekt
        public void TilknytProjektleder(Medarbejder enProjektleder)
        {
            minProjektleder = enProjektleder;
        }

        // metode til at hente liste af associerede medarbejdere
        public Medarbejder GetMinProjektleder()
        {
            return minProjektleder;
        }

        // metode til at fjerne et associeret medarbejder-objekt
        public void FjernProjektleder()
        {
            minProjektleder = null;
        }

        #endregion

        #region Properties

        public int ProjektNr
        {
            get { return projektNr; }
        }

        public string Titel
        {
            get { return titel; }
            set { titel = value; }
        }

        public DateTime Starttidspunkt
        {
            get { return starttidspunkt; }
            set { starttidspunkt = value; }
        }

        public string Projektfase
        {
            get { return projektfase; }
            set { projektfase = value; }
        }

        public string Deadline
        {
            get { return deadline; }
            set { deadline = value; }
        }

        public string Tidsforbrug
        {
            get { return tidsforbrug; }
            set { tidsforbrug = value; }
        }

        public DateTime Sluttidspunkt
        {
            get { return sluttidspunkt; }
            set { sluttidspunkt = value; }
        }

        public bool Aktiv
        {
            get { return aktiv; }
            set { aktiv = value; }
        }

        #endregion
    }
}
